#Boa:Dialog:Dialog1

import wx
import wx.stc
import wx.gizmos
import wx.richtext
import wx.grid
import consultasBD
import utiles
from decimal import Decimal
import Image
import os
import shutil

ROJO = (255, 145, 145, 255)
VERDE = (145, 255, 145, 255)
AZUL = (145, 145, 255, 255)
BLANCO = (255, 255, 255, 255)
AMARILLO = (254, 248, 191, 255)
GRIS = ( 220, 220, 220, 255)
NEGRO = ( 0, 0, 0, 255)
VERDENEGRO = ( 47, 79, 79, 255)

##width_s = 480
##height_s = 320
width_s = 160
height_s = 100
width_rs = 800
height_rs = 533

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1BUTTON1, wxID_DIALOG1BUTTON2, wxID_DIALOG1BUTTON3, 
 wxID_DIALOG1BUTTON4, wxID_DIALOG1BUTTON5, wxID_DIALOG1CHECKBOX1, 
 wxID_DIALOG1GENERICDIRCTRL1, wxID_DIALOG1GRID1, wxID_DIALOG1LISTBOX1, 
 wxID_DIALOG1RICHTEXTCTRL2, wxID_DIALOG1STATICBITMAP1, 
 wxID_DIALOG1STATICTEXT1, wxID_DIALOG1STATICTEXT10, wxID_DIALOG1STATICTEXT11, 
 wxID_DIALOG1STATICTEXT12, wxID_DIALOG1STATICTEXT13, wxID_DIALOG1STATICTEXT14, 
 wxID_DIALOG1STATICTEXT15, wxID_DIALOG1STATICTEXT16, wxID_DIALOG1STATICTEXT17, 
 wxID_DIALOG1STATICTEXT18, wxID_DIALOG1STATICTEXT19, wxID_DIALOG1STATICTEXT2, 
 wxID_DIALOG1STATICTEXT3, wxID_DIALOG1STATICTEXT4, wxID_DIALOG1STATICTEXT5, 
 wxID_DIALOG1STATICTEXT6, wxID_DIALOG1STATICTEXT7, wxID_DIALOG1STATICTEXT8, 
 wxID_DIALOG1STATICTEXT9, wxID_DIALOG1STYLEDTEXTCTRL1, wxID_DIALOG1TEXTCTRL1, 
 wxID_DIALOG1TEXTCTRL10, wxID_DIALOG1TEXTCTRL11, wxID_DIALOG1TEXTCTRL12, 
 wxID_DIALOG1TEXTCTRL13, wxID_DIALOG1TEXTCTRL14, wxID_DIALOG1TEXTCTRL15, 
 wxID_DIALOG1TEXTCTRL16, wxID_DIALOG1TEXTCTRL2, wxID_DIALOG1TEXTCTRL3, 
 wxID_DIALOG1TEXTCTRL4, wxID_DIALOG1TEXTCTRL5, wxID_DIALOG1TEXTCTRL6, 
 wxID_DIALOG1TEXTCTRL7, wxID_DIALOG1TEXTCTRL8, wxID_DIALOG1TEXTCTRL9, 
] = [wx.NewId() for _init_ctrls in range(48)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(163, 104), size=wx.Size(1053, 498),
              style=wx.DEFAULT_DIALOG_STYLE, title='Agregar producto')
        self.SetClientSize(wx.Size(1045, 471))

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label='Proveedor', name='staticText1', parent=self,
              pos=wx.Point(272, 8), size=wx.Size(50, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
              label='Cod.Sussan', name='staticText2', parent=self,
              pos=wx.Point(8, 8), size=wx.Size(57, 13), style=0)

        self.staticText3 = wx.StaticText(id=wxID_DIALOG1STATICTEXT3,
              label='Descripcion', name='staticText3', parent=self,
              pos=wx.Point(72, 8), size=wx.Size(54, 13), style=0)

        self.staticText4 = wx.StaticText(id=wxID_DIALOG1STATICTEXT4,
              label='Estacion', name='staticText4', parent=self,
              pos=wx.Point(448, 8), size=wx.Size(40, 13), style=0)

        self.staticText5 = wx.StaticText(id=wxID_DIALOG1STATICTEXT5,
              label='Disponibilidad (doble click sobre renglon sombreado)',
              name='staticText5', parent=self, pos=wx.Point(8, 48),
              size=wx.Size(248, 13), style=0)

        self.staticText6 = wx.StaticText(id=wxID_DIALOG1STATICTEXT6,
              label='Anio', name='staticText6', parent=self, pos=wx.Point(528,
              8), size=wx.Size(21, 13), style=0)

        self.staticText7 = wx.StaticText(id=wxID_DIALOG1STATICTEXT7,
              label='Rubro', name='staticText7', parent=self, pos=wx.Point(648,
              8), size=wx.Size(29, 13), style=0)

        self.staticText8 = wx.StaticText(id=wxID_DIALOG1STATICTEXT8,
              label='Grupo', name='staticText8', parent=self, pos=wx.Point(800,
              8), size=wx.Size(29, 13), style=0)

        self.staticText9 = wx.StaticText(id=wxID_DIALOG1STATICTEXT9,
              label='Descripcion particular', name='staticText9', parent=self,
              pos=wx.Point(304, 88), size=wx.Size(102, 13), style=0)

        self.staticText10 = wx.StaticText(id=wxID_DIALOG1STATICTEXT10,
              label='Precio', name='staticText10', parent=self,
              pos=wx.Point(576, 8), size=wx.Size(29, 13), style=0)

        self.staticText11 = wx.StaticText(id=wxID_DIALOG1STATICTEXT11,
              label='Precio WEB', name='staticText11', parent=self,
              pos=wx.Point(304, 384), size=wx.Size(54, 13), style=0)

        self.staticText12 = wx.StaticText(id=wxID_DIALOG1STATICTEXT12,
              label='SKU', name='staticText12', parent=self, pos=wx.Point(304,
              48), size=wx.Size(19, 13), style=0)

        self.staticText13 = wx.StaticText(id=wxID_DIALOG1STATICTEXT13,
              label='Nombre', name='staticText13', parent=self,
              pos=wx.Point(376, 48), size=wx.Size(37, 13), style=0)

        self.staticText14 = wx.StaticText(id=wxID_DIALOG1STATICTEXT14,
              label='Agregado particular a la Descripcion particular',
              name='staticText14', parent=self, pos=wx.Point(304, 312),
              size=wx.Size(220, 13), style=0)

        self.textCtrl1 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL1, name='textCtrl1',
              parent=self, pos=wx.Point(8, 24), size=wx.Size(64, 21), style=0,
              value='')
        self.textCtrl1.SetEditable(True)
        self.textCtrl1.Bind(wx.EVT_KILL_FOCUS, self.OnKillCodSussan)

        self.textCtrl2 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL2, name='textCtrl2',
              parent=self, pos=wx.Point(72, 24), size=wx.Size(200, 21), style=0,
              value='')
        self.textCtrl2.SetEditable(False)

        self.textCtrl3 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL3, name='textCtrl3',
              parent=self, pos=wx.Point(272, 24), size=wx.Size(176, 21),
              style=0, value='')
        self.textCtrl3.SetEditable(False)

        self.textCtrl4 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL4, name='textCtrl4',
              parent=self, pos=wx.Point(448, 24), size=wx.Size(80, 21), style=0,
              value='')
        self.textCtrl4.SetEditable(False)

        self.textCtrl5 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL5, name='textCtrl5',
              parent=self, pos=wx.Point(528, 24), size=wx.Size(40, 21), style=0,
              value='')
        self.textCtrl5.SetEditable(False)

        self.textCtrl6 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL6, name='textCtrl6',
              parent=self, pos=wx.Point(648, 24), size=wx.Size(152, 21),
              style=0, value='')
        self.textCtrl6.SetEditable(False)

        self.textCtrl7 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL7, name='textCtrl7',
              parent=self, pos=wx.Point(800, 24), size=wx.Size(136, 21),
              style=0, value='')
        self.textCtrl7.SetEditable(False)

        self.textCtrl8 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL8, name='textCtrl8',
              parent=self, pos=wx.Point(576, 24), size=wx.Size(64, 21),
              style=wx.TE_RIGHT | wx.TE_LEFT, value='0.00')
        self.textCtrl8.SetEditable(False)

        self.textCtrl11 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL11,
              name='textCtrl11', parent=self, pos=wx.Point(376, 64),
              size=wx.Size(216, 21), style=0, value='')
        self.textCtrl11.Bind(wx.EVT_KILL_FOCUS, self.OnKillNombre)

        self.styledTextCtrl1 = wx.stc.StyledTextCtrl(id=wxID_DIALOG1STYLEDTEXTCTRL1,
              name='styledTextCtrl1', parent=self, pos=wx.Point(304, 104),
              size=wx.Size(288, 208), style=0)

        self.textCtrl10 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL10,
              name='textCtrl10', parent=self, pos=wx.Point(304, 64),
              size=wx.Size(72, 21), style=0, value='')
        self.textCtrl10.SetEditable(False)

        self.richTextCtrl2 = wx.richtext.RichTextCtrl(id=wxID_DIALOG1RICHTEXTCTRL2,
              parent=self, pos=wx.Point(304, 328), size=wx.Size(288, 56),
              style=wx.richtext.RE_MULTILINE, value='')
        self.richTextCtrl2.SetEditable(False)

        self.textCtrl9 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL9, name='textCtrl9',
              parent=self, pos=wx.Point(304, 400), size=wx.Size(64, 21),
              style=wx.TE_RIGHT | wx.TE_LEFT, value='0.00')

        self.textCtrl15 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL15,
              name='textCtrl15', parent=self, pos=wx.Point(376, 400),
              size=wx.Size(64, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')

        self.checkBox1 = wx.CheckBox(id=wxID_DIALOG1CHECKBOX1,
              label='Habilitado', name='checkBox1', parent=self,
              pos=wx.Point(304, 440), size=wx.Size(70, 13), style=0)
        self.checkBox1.SetValue(False)

        self.button1 = wx.Button(id=wxID_DIALOG1BUTTON1, label='Grabar',
              name='button1', parent=self, pos=wx.Point(528, 440),
              size=wx.Size(64, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnGuardar, id=wxID_DIALOG1BUTTON1)

        self.button2 = wx.Button(id=wxID_DIALOG1BUTTON2, label='Limpiar',
              name='button2', parent=self, pos=wx.Point(976, 400),
              size=wx.Size(64, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnLimpiar, id=wxID_DIALOG1BUTTON2)

        self.button3 = wx.Button(id=wxID_DIALOG1BUTTON3, label='Salir',
              name='button3', parent=self, pos=wx.Point(976, 440),
              size=wx.Size(64, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_DIALOG1BUTTON3)

        self.grid1 = wx.grid.Grid(id=wxID_DIALOG1GRID1, name='grid1',
              parent=self, pos=wx.Point(8, 64), size=wx.Size(288, 400),
              style=0)
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK,
              self.OnDobleClickIzquierdo)

        self.staticText15 = wx.StaticText(id=wxID_DIALOG1STATICTEXT15,
              label='Fecha Alta', name='staticText15', parent=self,
              pos=wx.Point(960, 8), size=wx.Size(51, 13), style=0)

        self.staticText16 = wx.StaticText(id=wxID_DIALOG1STATICTEXT16,
              label='Cantidad', name='staticText16', parent=self,
              pos=wx.Point(544, 384), size=wx.Size(43, 13), style=0)

        self.staticText18 = wx.StaticText(id=wxID_DIALOG1STATICTEXT18,
              label='Recomendado', name='staticText18', parent=self,
              pos=wx.Point(376, 384), size=wx.Size(68, 13), style=0)

        self.textCtrl12 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL12,
              name='textCtrl12', parent=self, pos=wx.Point(960, 24),
              size=wx.Size(80, 21), style=0, value='')
        self.textCtrl12.SetEditable(False)

        self.textCtrl13 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL13,
              name='textCtrl13', parent=self, pos=wx.Point(544, 400),
              size=wx.Size(48, 21), style=wx.TE_RIGHT | wx.TE_LEFT, value='')
        self.textCtrl13.SetEditable(False)

        self.genericDirCtrl1 = wx.GenericDirCtrl(defaultFilter=0, dir='.',
              filter='', id=wxID_DIALOG1GENERICDIRCTRL1, name='genericDirCtrl1',
              parent=self, pos=wx.Point(600, 64), size=wx.Size(216, 152),
              style=wx.DIRCTRL_3D_INTERNAL | wx.SUNKEN_BORDER)

        self.button4 = wx.Button(id=wxID_DIALOG1BUTTON4, label='Cargar DIR',
              name='button4', parent=self, pos=wx.Point(824, 288),
              size=wx.Size(64, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnLeerDirectorio,
              id=wxID_DIALOG1BUTTON4)

        self.staticBitmap1 = wx.StaticBitmap(bitmap=wx.NullBitmap,
              id=wxID_DIALOG1STATICBITMAP1, name='staticBitmap1', parent=self,
              pos=wx.Point(824, 64), size=wx.Size(216, 216), style=0)

        self.textCtrl14 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL14,
              name='textCtrl14', parent=self, pos=wx.Point(824, 332),
              size=wx.Size(216, 21), style=0, value='')
        self.textCtrl14.SetEditable(False)

        self.button5 = wx.Button(id=wxID_DIALOG1BUTTON5, label='Renombrar',
              name='button5', parent=self, pos=wx.Point(824, 400),
              size=wx.Size(64, 23), style=0)
        self.button5.Bind(wx.EVT_BUTTON, self.OnRenombrar,
              id=wxID_DIALOG1BUTTON5)

        self.listBox1 = wx.ListBox(choices=[], id=wxID_DIALOG1LISTBOX1,
              name='listBox1', parent=self, pos=wx.Point(600, 224),
              size=wx.Size(216, 240), style=0)
        self.listBox1.Bind(wx.EVT_LISTBOX, self.OnClick,
              id=wxID_DIALOG1LISTBOX1)

        self.staticText17 = wx.StaticText(id=wxID_DIALOG1STATICTEXT17,
              label='Origen', name='staticText17', parent=self,
              pos=wx.Point(824, 320), size=wx.Size(32, 13), style=0)

        self.staticText19 = wx.StaticText(id=wxID_DIALOG1STATICTEXT19,
              label='Destino', name='staticText19', parent=self,
              pos=wx.Point(824, 352), size=wx.Size(36, 13), style=0)

        self.textCtrl16 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL16,
              name='textCtrl16', parent=self, pos=wx.Point(824, 368),
              size=wx.Size(216, 21), style=0, value='')
        self.textCtrl16.SetEditable(False)

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.crearGrilla()
        self.staticBitmap1.SetBackgroundColour(GRIS)
        self.textCtrl1.SetFocus()

    def OnKillCodSussan(self, event):
        if self.textCtrl1.GetLabel()!="":
            self.buscarCodSussan()
            self.textCtrl1.Bind(wx.EVT_KILL_FOCUS, None)

    def OnKillNombre(self, event):
        texto = self.textCtrl11.GetLabel()
        if texto != "":
            texto = texto.upper()
            self.textCtrl11.SetLabel(texto)

    def OnLimpiar(self, event):
        self.textCtrl1.SetLabel("")
        self.textCtrl2.SetLabel("")
        self.textCtrl3.SetLabel("")
        self.textCtrl4.SetLabel("")
        self.textCtrl5.SetLabel("")
        self.textCtrl6.SetLabel("")
        self.textCtrl7.SetLabel("")
        self.textCtrl8.SetLabel("0.00")
        self.textCtrl9.SetLabel("0.00")
        self.textCtrl10.SetLabel("")
        self.textCtrl11.SetLabel("")
        self.textCtrl12.SetLabel("")
        self.textCtrl13.SetLabel("")
        self.textCtrl14.SetLabel("")
        self.textCtrl16.SetLabel("")
        self.staticBitmap1.SetBitmap(wx.NullBitmap)
        self.listBox1.Clear()
        self.textCtrl15.SetLabel("0.00")
        self.textCtrl1.SetEditable(True)
        self.textCtrl1.Bind(wx.EVT_KILL_FOCUS, self.OnKillCodSussan)
        
        self.richTextCtrl2.SetValue("")
        self.styledTextCtrl1.SetText("")
        self.checkBox1.SetValue(False)
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.textCtrl1.SetFocus()

    def colorRenglon(self,fila,color):
        for col in xrange(self.grid1.GetNumberCols()):
            self.grid1.SetCellBackgroundColour(fila,col,color)

    def llenarEncabezado(self,codsussan):
        r1 = "SELECT p.proveedor,pv.nombre,p.descri,p.preciolt1,p.estacion,p.anio, \n"
        r2 = "       p.grupo,g.nombregrupo,r.idrubro,r.nombrerubro \n"
        r3 = "FROM productos p, proveedor pv,grupos g,rubros r \n"
        r4 = "WHERE p.codsussan='"+codsussan+"' AND p.proveedor=pv.idproveedor "
        r5 = "      AND p.grupo=g.idgrupo AND p.grupo=r.idgrupo "
        sql = r1+r2+r3+r4+r5
        datos1 = consultasBD.ordenCrudaDict(sql)
        if len(datos1)==0 or datos1==None or datos1==():
            utiles.mensaje(None,"CODSUSSAN no encontrado")
            self.textCtrl1.SetLabel("")
            self.textCtrl1.SetFocus()
            return False
        item = datos1[0]
        descripcion = item["descri"]
        proveedor = item["nombre"]+" / "+str(item["proveedor"])
        estacion = item["estacion"]
        anio = str(item["anio"])
        rubro = item["nombrerubro"]+" / "+str(item["idrubro"])
        grupo = item["nombregrupo"]+" / "+str(item["grupo"])
        precio = str(item["preciolt1"])
        self.textCtrl2.SetLabel(descripcion)
        self.textCtrl3.SetLabel(proveedor)
        self.textCtrl4.SetLabel(estacion)
        self.textCtrl5.SetLabel(anio)
        self.textCtrl6.SetLabel(rubro)
        self.textCtrl7.SetLabel(grupo)
        self.textCtrl8.SetLabel(precio)
        self.textCtrl9.SetLabel(precio) #precio WEB
        self.textCtrl1.SetEditable(False)

        return True

    def llenarDatosDisponibilidad(self,codsussan):
        r1 = "SELECT p1.color, p1.nombre, p1.talle, p1.cant \n"
        r2 = "FROM \n"
        r3 = "  (SELECT ptc.color, c.nombre, ptc.talle, s.sucursal, \n"
        r4 = "          SUM( s.stock ) AS cant \n"
        r5 = "   FROM producto_talle_color ptc, stock s, colores c \n"
        r6 = "   WHERE s.ptc=ptc.id AND ptc.codsussan= '"+codsussan+"' \n"
        r7 = "        AND c.idcolor = ptc.color \n"
        r8 = "   GROUP BY ptc.color, ptc.talle) AS p1 \n"
        r9 = "WHERE p1.cant >0 ORDER BY p1.nombre,p1.talle \n"
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9
        datos3 = consultasBD.ordenCrudaDict(sql)
        if len(datos3)==0 or datos3==None or datos3==():
            utiles.mensaje(None,"No hay disponibilidad de este producto")
            self.OnLimpiar(None)
            self.textCtrl1.SetLabel("")
            self.textCtrl1.SetFocus()
            return False

        try:
            idcolorAnt = datos3[0]["color"]
            color = datos3[0]["nombre"]+" / "+str(idcolorAnt)
            colorinicial = color
        except:
            idcolorAnt = 0
            color = ""
            colorinicial = color

        fil = 0
        totalcolor = 0
        colorasignado = GRIS
        for item in datos3:
            idcolor = item["color"]
            talle = str(item["talle"])
            cant = str(item["cant"])
            if idcolor != idcolorAnt:
                #muestra subtotal para el color
                self.grid1.SetCellValue(fil,0,colorinicial)
                self.grid1.SetCellValue(fil,1,"TOTAL")
                self.grid1.SetCellValue(fil,2,str(totalcolor))
                self.grid1.SetCellAlignment(fil, 1, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
                self.grid1.SetCellAlignment(fil, 2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
                self.colorRenglon(fil,colorasignado)
                self.grid1.AppendRows()
                fil+= 1
                totalcolor = 0
                idcolorAnt = idcolor
                color = item["nombre"]+" / "+str(idcolor)
                colorinicial = color

            try:
                totalcolor+= item["cant"]
            except:
                totalcolor+= 0
            self.grid1.SetCellValue(fil,0,color)
            self.grid1.SetCellValue(fil,1,talle)
            self.grid1.SetCellValue(fil,2,cant)
            self.grid1.SetCellAlignment(fil, 1, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil, 2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.AppendRows()
            fil+= 1
            color = ""

        self.grid1.SetCellValue(fil,0,colorinicial)
        self.grid1.SetCellValue(fil,1,"TOTAL")
        self.grid1.SetCellValue(fil,2,str(totalcolor))
        self.grid1.SetCellAlignment(fil, 1, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil, 2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.colorRenglon(fil,colorasignado)

        return True

    def buscarCodSussan(self):
        codsussan = self.textCtrl1.GetLabel()
        if not self.llenarEncabezado(codsussan):
            self.OnLimpiar(None)
            return
        if not self.llenarDatosDisponibilidad(codsussan):
            self.OnLimpiar(None)
            return
        
        self.textCtrl9.SetFocus()
        self.ajustarAnchoColumnas()
        fecha = utiles.obtenerFecha("d-m-Y")
        self.textCtrl12.SetLabel(fecha)
        self.checkBox1.SetValue(False)

        self.button2.SetFocus()
        
    def ajustarAnchoColumnas(self):
        for y in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(y,True)
            
    def crearGrilla(self):
        #Color,Cantidad
        #0     1
        columnas = ['Color','Talle','Cant']
        self.grid1.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)

        self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
        self.grid1.EnableEditing(False)
        self.ajustarAnchoColumnas()
        self.grid1.Refresh()

    def OnSalir(self, event):
        self.Close()

    def estableceDisponibilidad(self,valor):
        cadena = "TALLES: "
        activado = False
        for fil in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(fil,0)==valor:
                if activado: 
                    activado = False
                else: 
                    activado = True
            if activado:
                talle = self.grid1.GetCellValue(fil,1)
                cadena+= talle+", "
        cadena = cadena[:-2]
        self.richTextCtrl2.SetValue(cadena)

    def existeSKU(self,sku):
        sql = "SELECT sku FROM saskastore WHERE sku='"+sku+"' "
        resultado = consultasBD.ordenCruda(sql)
        if resultado == None or resultado ==() or len(resultado)==0:
            return False
        return True

    def OnDobleClickIzquierdo(self, event):
        fil = self.grid1.GetGridCursorRow()
        if self.grid1.GetCellValue(fil,0) == "":
            return
        if self.grid1.GetCellValue(fil,1) != "TOTAL":
            return
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK,None)

        #si el renglon ya tiene color verde, se desactiva
        color = self.grid1.GetCellBackgroundColour(fil,0)
        if color == VERDE:
            self.textCtrl10.SetLabel("")
            self.textCtrl11.SetLabel("")
            self.textCtrl13.SetLabel("")
            self.colorRenglon(fil,GRIS)
            
            self.richTextCtrl2.SetValue("")
            self.styledTextCtrl1.SetText("")

            self.grid1.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK,
                  self.OnDobleClickIzquierdo)
            return
        
        #se revisa grilla por si ya hay un renglon verde
        #se pone en gris y se pone en verde el nuevo seleccionado
        for fila in xrange(self.grid1.GetNumberRows()):
            color = self.grid1.GetCellBackgroundColour(fila,0)
            if color == VERDE: #ya fue activado, hay que desactivar
                self.textCtrl10.SetLabel("")
                self.textCtrl11.SetLabel("")
                self.textCtrl13.SetLabel("")
                self.colorRenglon(fila,GRIS)
                
                self.richTextCtrl2.SetValue("")
                self.styledTextCtrl1.SetText("")
        
        #se establece sku y se pinta el renglon y se pone disponibilidad
        nombre = self.textCtrl2.GetLabel()
        celda = self.grid1.GetCellValue(fil,0)
        cantidad = self.grid1.GetCellValue(fil,2)
        nombrecolor,codigocolor = celda.split(" / ")
        codsussan = self.textCtrl1.GetLabel()
        sku = codsussan+"-"+codigocolor
        if not self.existeSKU(sku):
            self.textCtrl10.SetLabel(sku)
            self.textCtrl11.SetLabel(nombre)
            self.textCtrl13.SetLabel(cantidad)
            self.colorRenglon(fil,VERDE)
            self.estableceDisponibilidad(celda)
            self.textCtrl11.SetFocus()
        else:
            texto = "Ya existe este producto en la web, no puede darlo\n"
            texto+= "de alta como nuevo. Pruebe modificaro"
            utiles.mensaje(None,texto)

        self.grid1.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK,
              self.OnDobleClickIzquierdo)

    def confirma(self,texto):
        import Dialog2
        confirma = Dialog2.Dialog2(None, texto)
        try:
            confirma.ShowModal()
            if confirma.getSeleccion():
                seguir = True
            else:
                seguir = False
        except:
            confirma.Destroy()
            return False
        confirma.Destroy()
        return seguir

    def OnGuardar(self, event):
        if ";" in self.styledTextCtrl1.GetText():
            texto = "NO debe usar el simbolo ';' (punto y coma)\n"
            texto+= "dentro de la descripcion del producto."
            utiles.mensaje(None,texto)
            self.styledTextCtrl1.SetFocus()
            return
        nombre = self.textCtrl11.GetLabel()
        sku = self.textCtrl10.GetLabel()
        descripcion = self.styledTextCtrl1.GetText()
        agregado = self.richTextCtrl2.GetValue()
        precioweb = self.textCtrl9.GetLabel()
        preciorecomendado = self.textCtrl15.GetLabel()
        cantidad = self.textCtrl13.GetLabel()
        if self.checkBox1.GetValue():
            habilitado = 1
        else:
            habilitado = 0
        fechaalta = utiles.obtenerFecha("Y-m-d h:m:s")
        modificado = fechaalta

        r1 = "saskastore(nombre,sku,descripcion,agregado,precioweb,"
        r2 = "preciorecomendado,cantidad,habilitado,fechaalta)"
        sql1 = r1+r2
        r1 = "('%s','%s','%s','%s'," % (nombre,sku,descripcion,agregado)
        r2 = "'%s','%s'," % (precioweb,preciorecomendado)
        r3 = "'%s','%s','%s')" % (cantidad,habilitado,fechaalta)
        sql2 = r1+r2+r3
        id1 = consultasBD.executaInsertSQL(self,sql1,sql2)

        sql1 = "saskastoremodf(sku,modificado)"
        sql2 = "('%s','%s')" % (sku,modificado)
        id2 = consultasBD.executaInsertSQL(self,sql1,sql2)

        if id1 == None or id2 == None:
            utiles.mensaje(None,"Error en la grabacion")
        self.OnLimpiar(None)

    def OnLeerDirectorio(self, event):
        self.textCtrl14.SetLabel("")
        self.listBox1.Clear()
        directorioarchivo = self.genericDirCtrl1.GetPath()
        archivo = directorioarchivo.split("\\")[-1]
        print archivo

        if self.genericDirCtrl1.GetPath() == "":
            texto = "Debe seleccionar alguna de las unidades visualizadas"
            utiles.mensaje(None, texto)
            return 1

        try:
            archivos = os.listdir(self.genericDirCtrl1.GetPath())
        except:
            archivos = []
        bandera = False
        for miarchivo in archivos:
            aux = miarchivo.split("\\")[-1]
            aux = aux.split(".")[-1]
            if aux in ["jpg","png","bmp"]:
                self.listBox1.Append(miarchivo)
                bandera = True

        if not bandera:
            texto = "-No se encontraron imagenes.\n"
            texto+= "-Debe seleccionar un directorio, o\n"
            texto+= "-No pudo leerse el directorio"
            utiles.mensaje(None,texto)
            return

    def OnClick(self, event):
        seleccion = self.listBox1.GetSelection()
        if seleccion < 0: return
        archivo = self.listBox1.GetItems()[seleccion]
        directorio = self.genericDirCtrl1.GetPath()
        self.textCtrl14.SetLabel(directorio+"\\"+archivo)

        width_s,height_s = self.staticBitmap1.GetSize()
        
        miImagen = Image.open(directorio+"\\"+archivo)
        auxiliar = miImagen.resize((width_s, height_s), Image.ANTIALIAS)
        auxiliar.save("c:\\matrisamor.doc\\store\\saskaStoreAgregar.jpg")

        self.staticBitmap1.SetBitmap(wx.Bitmap("c:\\matrisamor.doc\\store\\saskaStoreAgregar.jpg"))

    def OnRenombrar(self, event):
        if self.listBox1.GetSelection()<0: return
        if self.textCtrl10.GetLabel()=="":
            utiles.mensaje(None,"No hay SKU establecido")
            self.grid1.SetFocus()
            return
        fecha = utiles.obtenerFecha("Y-m-d")
        directorio = "c:\\matrisamor.doc\\store\\"+fecha
        archivo = self.listBox1.GetItems()[self.listBox1.GetSelection()]
        extension = archivo.split(".")[-1]
        sku = self.textCtrl10.GetLabel()
        nuevo = sku+"."+extension
        archivoOrg = self.textCtrl14.GetLabel()

        try:
            if not os.path.isdir(directorio): os.mkdir(directorio)
        except:
            utiles.mensaje(None,"Error creando directorio destino\n"+directorio)
            return
        
        try:
            nuevoArchivo = str(directorio+"\\"+nuevo)
            print "Copiando",nuevoArchivo,"....",
            shutil.copy(archivoOrg,nuevoArchivo)
            print
            texto = "Archivo copiado y renombrado en:\n"
            texto+= directorio+"\n"
            texto+= "Nombre: "+nuevo
            self.textCtrl16.SetLabel(directorio+"\\"+nuevo)
            utiles.mensaje(None,texto)
        except:
            print "ERROR"
            utiles.mensaje(None,"No pudo renombrarse el archivo")
